package top.chenziji.Util;

import java.io.File;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;

public class CommService {

    private static TimerTask task;
    private static Timer timer;

    public static void start(){
        // 创建一个Timer实例
        timer = new Timer();

        // 创建一个TimerTask实例，定义要执行的任务
        task = new TimerTask() {
            @Override
            public void run() {
                // 这里是要执行的任务的代码
                System.out.println("任务执行时间：" + System.currentTimeMillis());
                //读取指定目录下的所有文件
                List<Map> maps = FileUitl.searcDirAllFile(Comm.inFilePath);
                for (Map map : maps) {
                    String filePath = map.get("filePath").toString();
                    //判断是否文件被占用
                    if(!FileUitl.fileIsLock(filePath)){
                        //创建对应的文件夹目录
                        String nameWithoutExtension = map.get("nameWithoutExtension").toString();
                        String extension = map.get("extension").toString();
                        File file = new File(Comm.outFilePath+"/"+nameWithoutExtension);
                        file.mkdirs();
                        //移动视频文件
                        FileUitl.moveFile(filePath,Comm.outFilePath+"/"+nameWithoutExtension);
                        //创建缩略图
                        try {
                            VideoThumbnail.cratePtoho(Comm.outFilePath+"/"+nameWithoutExtension+"/"+nameWithoutExtension+extension,Comm.outFilePath+"/"+nameWithoutExtension);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        //删除缓存图片

                        //压缩并加密视频文件

                        //移动到指定目录文件
                    }
                }
            }
        };

        // 安排任务每5分钟（300000毫秒）执行一次，初始延迟为0毫秒
        long delay = 0;
        long period = 5 * 60 * 1000; // 5分钟转换为毫秒
        timer.scheduleAtFixedRate(task, delay, period);
    }

    public static void stop(){
        timer.cancel();
    }
}
